Deep Learning I
6. 卷积神经网络
WU Xiaokun 吴晓堃
xkun.wu [at] gmail
2021/03/28
假设是猫狗分类任务,使用手机拍摄图片:12M像素
MLP是全连接网络
类比(全连接)线性模型:输入、输出是矩阵
\begin{aligned} o_i &= w^k x_k\\ \end{aligned}
\begin{aligned} \mathbf{H}_{i,j} &= \mathbf{W}_{i,j}^{k,l} \mathbf{X}_{k,l}\\ \end{aligned}
重新索引以适配局部窗口:k = i+a, l = j+b
检测对象在输入空间平移,输出不变
只可能是:\mathbf{W}_{i,j}^{a,b} = \mathbf{V}^{a,b}
这就是卷积 convolution交叉相关操作
注意:从\mathbf{W}_{i,j}^{a,b}到\mathbf{V}^{a,b}参数量极大减少
检测区域仅限于输入空间中的局部窗口
解决方案:|a|,|b|>\Delta \Rightarrow \mathbf{V}^{a,b} = 0
\begin{aligned} \mathbf{H}_{i,j} &= \sum_{a,b= -\Delta}^\Delta \mathbf{V}^{a,b} \mathbf{X}_{i+a,j+b} \end{aligned}
\mathbf{V}^{a,b}被称为卷积核 convolution kernel或者滤波器 filter
注意:参数量再次大幅减少
\begin{aligned} \mathbf{H}_{i,j} & = \mathbf{W}_{i,j}^{k,l} \mathbf{X}_{k,l}\\ &= \mathbf{W}_{i,j}^{a,b} \mathbf{X}_{i+a,j+b}\\ &\approx \mathbf{V}^{a,b} \mathbf{X}_{i+a,j+b}\\ \mathbf{H}_{i,j} &\approx \sum_{a,b= -\Delta}^\Delta \mathbf{V}^{a,b} \mathbf{X}_{i+a,j+b} \end{aligned}
问题:局部观察无法获取覆盖范围较大的特征
\mathbf{Y} = \mathbf{X} \star \mathbf{W} + b
注意:输出尺寸略小于输入尺寸
应用卷积层:图像缩小,但核大小一般不变
例如:28x28的图片,5x5的卷积核
回顾:局部观察无法获取覆盖范围较大的特征?
应用卷积层:图像缩小,但核大小一般不变
想象:用显微镜观察目标;“站得高看得远”
特征映射 feature map:特征提取的过程(或结果)
感受野 receptive field:信息融合的范围
\begin{bmatrix} \ \ 0 & -1 & \ \ 0 \\ -1 & \ \ 5 & -1 \\ \ \ 0 & -1 & \ \ 0 \\ \end{bmatrix}
\begin{bmatrix} -1 & -1 & -1 \\ -1 & \ \ 8 & -1 \\ -1 & -1 & -1 \\ \end{bmatrix}
\frac{1}{16} \begin{bmatrix} \ \ 1 &\ \ 2 &\ \ 1 \\ \ \ 2 &\ \ 4 &\ \ 2 \\ \ \ 1 &\ \ 2 &\ \ 1 \\ \end{bmatrix}
二维交叉相关
\begin{aligned} \mathbf{H}_{i,j} &= \sum_{a,b= -\Delta}^\Delta \mathbf{V}^{a,b} \mathbf{X}_{i+a,j+b} \end{aligned}
二维卷积:只是卷积核索引改为倒序
\begin{aligned} \mathbf{H}_{i,j} &= \sum_{a,b= -\Delta}^\Delta \mathbf{V}^{-a,-b} \mathbf{X}_{i+a,j+b} \end{aligned}
由于对称性:在实际应用中没有区别
区别:数学概念的约定俗成
一维
\begin{aligned} \mathbf{y}_{i} &= \sum_{a= -\Delta}^\Delta \mathbf{V}^{a} \mathbf{X}_{i+a} \end{aligned}
三维
\begin{aligned} \mathbf{Y}_{i,j,k} &= \sum_{a,b,c= -\Delta}^\Delta \mathbf{V}^{a,b,c} \mathbf{X}_{i+a,j+b,k+c} \end{aligned}
应用卷积层:图像缩小,但核大小一般不变
填充:在图像周边添加额外的行/列
假设填充p_h行、p_w列:两边同时填充,总数是p_h,p_w
通常填充用于保持图像大小不变
应用卷积层:图像缩小,但核大小一般不变
注意:图像缩小量是层数的线性函数
层数越多:模型越复杂,计算量越大
步幅:卷积核在行/列上每次滑动的位移量
假设纵向、横向上的步幅分别是s_h、s_w
彩色图片有多个通道,即特征:颜色是最常见的特征描述
彩色图片有多个通道,即特征:颜色是最常见的特征描述
每个通道应用一个卷积核
\mathbf{Y} = \sum_{k=0}^{c_i} \mathbf{X}_{k,:,:} \star \mathbf{W}_{k,:,:}
通道:特征映射;卷积核作用于每个通道,得到激活值
卷积核:可识别的模式
激活值:模式的匹配度
1x1 卷积:不识别模式,只融合通道
\mathbf{Y} = \mathbf{X} \star \mathbf{W} + \mathbf{B}
计算复杂度:O(c_ic_ok_hk_wm_hm_w)
推论:不能不买N卡
提高数值计算的稳定性
黑白交界
\begin{matrix} 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ \end{matrix}
卷积输出
\begin{matrix} 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ \end{matrix}
池化 pooling:为固定形状窗口计算输出
没有可学习参数
遍历输入的所有位置
一般来说:最大池化对检测、识别类任务更有效
提高数值计算的稳定性
黑白交界
\begin{matrix} 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ \end{matrix}
卷积输出
\begin{matrix} 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ 0. & 1. & 0. & 0.\\ \end{matrix}
2x2最大池化
\begin{matrix} 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ 1. & 1. & 0. & 0.\\ \end{matrix}
池化层与卷积层类似:都具有填充和步幅
对每个输入通道应用池化层
回顾:MLP用于Fashion-MNIST数据集
卷积:直接在二维图像空间操作
LeNet:最早的、能够高效解决实际工业问题的卷积神经网络
LeNet(LeNet-5)由两个部分组成:
LeNet(LeNet-5)由两个部分组成:先看卷积层
LeNet(LeNet-5)由两个部分组成:再看全连接层
图像识别的两个原则。图像卷积。填充、步幅。多输入、输出通道。池化。LeNet。
重点:平移不变性、局部性;图像卷积计算;卷积层输出、卷积核的含义;填充、步幅的作用;多通道的含义、1x1 卷积的作用;池化的作用;LeNet的架构设计。
难点:平移不变性、局部性的计算形式。
简述图像识别两个原则的解释、计算。
简述图像卷积的计算方法。
简述卷积层输出、卷积核的含义。
简述填充、步幅的作用、计算公式。
简述1x1 卷积的作用。
简述池化的作用。
简述LeNet的架构设计。